#include "common.h"
#include "sload.h"
#include "iostructs/p_bumped.h"

f_deffer _main ( p_bumped I )
{
  f_deffer	O;

  surface_bumped 	S 	= sload 	(I);

  // Sample normal, rotate it by matrix, encode position 
  half3 Ne				= mul       (half3x3(I.M1, I.M2, I.M3), S.normal);
		Ne				= normalize	(Ne);

	// hemi,sun,material
	half 	ms	= xmaterial		;
#ifdef USE_LM_HEMI
	half4	lm 	= tex2D			(s_hemi, I.lmh);
//	half 	h  	= dot			(lm.rgb,1.f/3.f);
	half 	h  	= get_hemi(lm);
# ifdef USE_R2_STATIC_SUN
//		 	ms 	= lm.w;
			ms 	= get_sun(lm);
# endif
#else
	half 	h	= I.position.w	;
# ifdef USE_R2_STATIC_SUN
		 	ms	= I.tcdh.w		;
# endif
#endif

	O.Ne 		= half4		(Ne, 										h		);
	O.position  = half4 	(I.position.xyz + Ne*S.height*def_virtualh, ms		);
//	O.position	= half4 	(I.position.xyz, ms);
	O.C			= half4		(S.base.xyz, 								S.gloss	);							// OUT: rgb.gloss

//	O.position  = half4 	(1,1,1,1);
//	O.Ne 		= half4		(1,1,1,1);
//	O.C			= half4		(1,1,1,1);


  return O;
}
